As a greater number of people begin to access the Internet through high speed connections, the content offered is expanding. Video and audio broadcasting over the internet is extremely appealing because the potential audience is extremely large and the cost of broadcasting is far less than traditional broadcasting methods. One method of broadcasting video and audio streams over the Internet is Multicasting.
Multicasting is one of the types of packets that the Internet Protocol Version 6 (“IPv6”) supports. It is communication between a single source and multiple receivers on a network. Unicast, the more common method of transmission over the Internet, is communication between a single source and single receiver. Multicasting is used to send files to multiple users at the same time somewhat as radio and TV programs are broadcast to many people at the same time. Typical uses of multicast include audio/video streaming and periodic issuance of online newsletters.
The multicast backbone (“MBone”) uses a of a portion of the Internet for Internet Protocol multicasting. The MBone consists of servers that are equipped to handle multicast protocol. An MBone router that is sending a packet to another MBone router through a non-MBone part of the Internet encapsulates the multicast packet as a unicast packet. The non-MBone routers simply see an ordinary packet. The destination MBone router unencapsulates the unicast packet and forwards it appropriately.
It is important that the MBone's use of the portions of the Internet that are not equipped to handle multicast protocol be Transmission Control Protocol (“TCP”) friendly. TCP is a protocol used along with IP to send data in the form of message units between computers over the Internet. While IP handles the actual delivery of the data, TCP keeps track of the individual units of data (packets) that a message is divided into for efficient routing through the Internet. When a multicast transmission is sent over a portion of the Internet that is not equipped to handle multicast protocol, the transmission of packets should be at the same rate that TCP would transmit them. This is called a TCP-friendly transmission rate. An method of transmission is “TCP-friendly” if it has a congestion control scheme that maintains the arrival rate of packets at some constant over the square root of the packet loss rate.
The various multicast protocols provide methods of insuring that each packet transmitted is received. One such method entails the recipient sending an acknowledgment signal to the source when the recipient receives each packet so that the source can determine that a packet was not received if an acknowledgment signal is not received. The problem with using acknowledgement signals to determine if each transmitted packet was received for multicast signals arises when there are many recipients, as is usually the cast with multicast transmissions. In such a case, the large number of acknowledgement signals sent for each packet would cause a great deal of congestion over the Internet.
One method of reducing the congestion caused by multicast signals on the Internet, such as the method used in Pragmatic General Multicast (“PGM”), is the use of negative acknowledgement signals. In this case, when the recipient does not receive a packet that it is supposed to receive, a negative acknowledgement signal is sent to the source so that the packet can be retransmitted. While this method greatly reduces the traffic from the recipients to the source when there are low errors, it causes a great deal of congestion when many recipients are experiencing errors.
A second method of reducing the congestion caused by multicast signals on the Internet is to use aggregators. Aggregators will aggregate the various acknowledgement signals or negative acknowledgement signals into a single combined signal at the routers. This reduces the congestion problem, but it requires additional infrastructure (i.e. routers that can aggregate signals).
A third method of reducing the congestion caused by multicast signals on the Internet is to use statistical or round-robin selection of receivers to send control traffic. For statistical selection of receivers to send control traffic, those receivers that are statistically more likely to receive errors transmit control traffic (i.e. acknowledgment or negative acknowledgement signals) more often than those receivers that do not experience errors as often. While this reduces the congestion problem, it also reduces the accuracy of the error detection.
As can be seen from above, the task of providing reliable multicasting outside of the MBone causes a great deal of undesired congestion on the Internet or requires additional infrastructure. Therefore, there exists a need in the art for a system and method of congestion control for multicast transmissions that is implemented entirely at the source of the transmission without any modifications to the receivers or routers.